/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package xmlaufgabe4;

import java.util.ArrayList;

/**
 * Klasse zur Darstellung einer DVD und allen zugehoerigen Informationen.
 * 
 * @author Adrian Cieluch
 */
public class DVD extends DataElement {
    /**
     * Speichert das Studio.
     */
    private String studio;
    /**
     * Speichert Regisseure.
     */
    private ArrayList<String> director;
    /**
     * Speichert Schauspieler.
     */
    private ArrayList<String> actor;
    /**
     * Speichert Formate.
     */
    private ArrayList<String> format;
    /**
     * Speichert die Dauer.
     */
    private String duration;
    /**
     * Speichert die Dimension.
     */
    private String dimension;

    /**
     * Initialisiert alle Attribute.
     */
    public DVD() {
        super();
        studio = "";
        director = new ArrayList<String>();
        actor = new ArrayList<String>();
        format = new ArrayList<String>();
        duration = "";
        dimension = "";
    }
    
    /**
     * Gibt das Studio zurueck.
     * 
     * @return das Studio
     */
    public String getStudio() {
        return studio;
    }

    /**
     * Setzt das Studio.
     * 
     * @param studio das zu setzende Studio
     */
    public void setStudio(String studio) {
        this.studio = studio;
    }

    /**
     * Gibt den Regisseur an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Regisseur
     */
    public String getDirectorByIndex(int index) {
        return director.get(index);
    }

    /**
     * Fuegt einen Regisseur hinzu.
     * 
     * @param director der zu setzende Regisseur
     */
    public void addDirector(String director) {
        this.director.add(director);
    }
    
    /**
     * Gibt die Anzahl der Regisseure zurueck.
     * 
     * @return Anzahl der Regisseure
     */
    public int getDirectorCount() {
        return director.size();
    }
    
    /**
     * Gibt den Schauspieler an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return der Schauspieler
     */
    public String getActorByIndex(int index) {
        return actor.get(index);
    }
    
    /**
     * Fuegt einen Schauspieler hinzu.
     * 
     * @param actor der Schauspieler
     */
    public void addActor(String actor) {
        this.actor.add(actor);
    }
    
    /**
     * Gibt die Anzahl der Schauspieler zurueck.
     * 
     * @return Anzahl der Schauspieler
     */
    public int getActorCount() {
        return actor.size();
    }
    
    /**
     * Gibt das Format an Hand des Index zurueck.
     * 
     * @param index der Index
     * @return das Format
     */
    public String getFormatByIndex(int index) {
        return format.get(index);
    }
    
    /**
     * Fuegt das Format hinzu.
     * 
     * @param format das Format
     */
    public void addFormat(String format) {
        this.format.add(format);
    }
    
    /**
     * Gibt die Anzahl der Formate zurueck.
     * 
     * @return Anzahl der Formate
     */
    public int getFormatCount() {
        return format.size();
    }

    /**
     * Gibt die Dauer zurueck.
     * 
     * @return die Dauer
     */
    public String getDuration() {
        return duration;
    }

    /**
     * Setzt die Dauer.
     * 
     * @param duration die zu setzende Dauer
     */
    public void setDuration(String duration) {
        this.duration = duration;
    }

    /**
     * Gibt die Dimension zurueck.
     * 
     * @return die Dimension
     */
    public String getDimension() {
        return dimension;
    }

    /**
     * Setzt die Dimension.
     * 
     * @param dimension die zu setzende Dimension
     */
    public void setDimension(String dimension) {
        this.dimension = dimension;
    }

    /**
     * Ermittelt die Anzahl der leeren Attribute und gibt diese zurueck.
     * 
     * @return Anzahl der leeren Attribute
     */
    @Override
    public int getEmptySlotCount() {
        empty = 0;
        
        this.findEmptySlots();
        
        if(studio.isEmpty())
            empty++;
        
        if(director.isEmpty())
            empty++;
        
        if(actor.isEmpty())
            empty++;
        
        return empty;
    }
}
